package br.ucl.arvore;

public class Arvore 
{
	public Node root;
    public int size;    
    
    //construtor genÃ©rico
    public Arvore()
    {
        this.root =  null;
        this.size = 0;
    }
    //contrutor que recebe valor
    public Arvore(String valor)
    {
        this.root = new Node(valor);
        this.size++;
    }
        
    //insere um novo elemento na Ã¡rvore
    public void Insert(String valor)
    {
    	if(this.isEmpty())
    	{
    		this.root = new Node(valor);
	       	this.size++;
    	}
    	else
    	{    		
    		this.Insert(valor, this.root);
    	}
    }
        
    public void Insert(String valor, Node noPai)
    {
    	Node noFilho = new Node(valor, noPai);
        
        noPai.filhos.add(noFilho);
        this.size++;
    }
    
    //verifica se a arvore encontra-se vazia
    public boolean isEmpty()
    {
        if(size == 0 || this.root == null)
            return true;
        else
            return false;
    }
       
    //retorna o numero de nodos da Ã¡rvore
    public int getSize()
    {
        return this.size;
    }      
    
    public Node getRoot()
    {
    	return this.root;
    }
}
